home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power Programmierung
/
Power-Programmierung (Tewi)(1994).iso
/
magazine
/
nan_news
/
toolkit
/
pending.prg
< prev
next >
Wrap
Text File
|
1991-08-15
|
5KB
|
133 lines
/*
* File......: PENDING.PRG
* Author....: Isa Asudeh
* CIS ID....: 76477,647
* Date......: $Date: 15 Aug 1991 23:05:20 $
* Revision..: $Revision: 1.1 $
* Log file..: $Logfile: E:/nanfor/src/pending.prv $
*
* This is an original work by Isa Asudeh and is placed in the
* public domain.
*
* Modification History
* --------------------
*
* $Log: E:/nanfor/src/pending.prv $
*
* Rev 1.1 15 Aug 1991 23:05:20 GLENN
* Forest Belt proofread/edited/cleaned up doc
*
* Rev 1.0 31 May 1991 21:18:04 GLENN
* Initial revision.
*
*/
/* $DOC$
* $FUNCNAME$
* FT_PENDING()
* $CATEGORY$
* Menus/Prompts
* $ONELINER$
* Display same-line pending messages after a wait.
* $SYNTAX$
* FT_PENDING ( <cMsg>, [ <nRow> ], [ <nCol> ], ;
* [ <nWait> ], [ <cColor> ] ) -> NIL
* $ARGUMENTS$
* <cMsg> is the message string to display.
*
* <nRow> is an optional screen row for message display, default row 24.
*
* <nCol> is an optional screen col for message display, default col 0.
*
* <nWait> is an optional wait (sec) between messages, default 5 sec.
*
* <cColor> is an optional color string for displayed messages, default
* is white text over red background.
* $RETURNS$
* NIL
* $DESCRIPTION$
* A good way to display information messages during the running
* of an application is to send them all to the SAME line on the
* screen where users are expected to look for them. In order to
* give users a chance to read the current message before the next one
* is displayed we may need to insert a delay after each message.
*
* FT_PENDING() function displays messages by keeping track of
* the time of the last message and providing a delay ONLY if the next
* pending message is issued much too soon after the current one.
*
* $EXAMPLES$
* FT_PENDING("Message one",20,0,3,"W+/G") // Displays "Message one."
* // sets row to 20, col to 0.
* // wait to 3 and color to
* // bright white over green.
* FT_PENDING("Message two") // Displays "Message two", after 5 sec.
* FT_PENDING("Message three") // Displays "Message three", after 5 sec.
*
*
* Note that default row, col, wait time and color need to be set only
* once in the very first call to FT_PENDING() and only if the internal
* default values are not appropriate.
*
* $END$
*/
#ifdef FT_TEST
FUNCTION MAIN()
@0,0 CLEAR
FT_PENDING("Message one",20,0,3,"W+/G") // Displays "Message one."
// sets row to 20, col to 0.
// wait to 3 and color to
// bright white over green.
FT_PENDING("Message two") // Displays "Message two", after 5 sec.
FT_PENDING("Message three") // Displays "Message three", after 5 sec.
return ( nil )
#endif
FUNCTION FT_PENDING (cMsg, nRow, nCol, nWait, cColor)
STATIC nLast_Time := 0, nRow1 := 24, nCol1 := 0
STATIC nWait1 := 5, cColor1 := 'W+/R,X'
LOCAL nThis_Time, nTiny := 0.1, cSavColor
*
* cMsg Message to display
* nRow Row of displayed message
* nCol Col of displayed message
* nWait Wait in seconds between messages
* cColor Color of displayed message
*
IF (cMsg == NIL ) //if no message, no work
RETURN NIL
ENDIF
nRow1 := IIF( nRow <> NIL, nRow, nRow1 ) //reset display row
nCol1 := IIF( nCol <> NIL, nCol, nCol1 ) //reset display col
nWait1 := IIF ( nWait <> NIL, nWait, nWait1) //reset display wait
cColor1 := IIF (cColor <> NIL, cColor, cColor1) //reset display color
nThis_Time := SECONDS() //time of current message
IF nLast_Time == 0
nLast_Time := nThis_Time - nWait1 //for first time round.
ENDIF
IF (nThis_Time - nLast_Time) < nTiny //if messages are coming too fast,
nLast_Time := nThis_Time + nWait1 //set time counter and then
INKEY (nWait1) //wait a few seconds.
ELSE
nLast_Time := nThis_Time //set time counter for next message.
ENDIF
@nRow1,0 clear to nRow1,80 //clear the display line
cSavColor := SETCOLOR(cColor1) //save current and set display color
@nRow1,nCol1 SAY cMsg //display message
SETCOLOR( cSavColor ) //restore colors.
RETURN NIL